home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
IRIX Base Documentation 1998 November
/
IRIX 6.5.2 Base Documentation November 1998.img
/
usr
/
relnotes
/
license_eoe
/
ch8.z
/
ch8
Wrap
Text File
|
1998-11-02
|
48KB
|
1,321 lines
- 1 -
8. _G_l_o_b_e_t_r_o_t_t_e_r__F_L_E_X_l_m__R_e_l_e_a_s_e__N_o_t_e_s
Flexible License Manager
Version 5.12a
RELEASE NOTES
May 19, 1997
These release notes describe the changes from FLEXlm v5.0
OVERVIEW
________
o lc_hostid() -- improved hostid interface.
o LM_A_RETRY_CHECKOUT attribute -- improved checkout reliability
o SUPERSEDE="feat1 ... featn" -- New license file option.
Allows one feature to supersede any other previous feature lines.
o PLATFORMS="plat1 ..." -- license can lock to particular
hardware platforms.
o Serial Number hostid (ID=nnnn) -- for licensing without
requiring real end-user hostid.
o lmdiag can checkout individual INCREMENT lines.
o WARNING() -- improved status reporting for Lenient Licensing.
o PERROR(), PWARN() -- easier Windows programming.
o MAX -- New End-User option allows sysadmin to prioritize
use amongst groups.
o TIMEOUTALL -- Easier way to TIMEOUT all features via end-user
options file.
o lc_checkin(...LM_CI_ALL_FEATURES...) -- You can now checkin
all features with one call. This gives a more accurate
log in REPORTLOG than simply exiting.
o LM_A_TCP_TIMEOUT -- Automatically retrieves licenses even
when users turn off their computers (especially Windows).
o CPU Usage is now logged to REPORTLOG file. Vendors can
now charge based on process CPU Usage, and users can
do internal billbacks also based on CPU Usage.
o CPU_USAGE_INTERVAL, CPU_USAGE_DELTA -- Users can fine-tune
how much CPU-Usage information is logged.
o Improved security for expiration dates.
o makekey is improved -- easier to use for more flexible.
o lmswitchr -- improved command-line interface.
- 2 -
o End-User Options file now supports PACKAGE names.
o lmdiag -- REPORTLOG now ignores lmdiag checkouts.
Important Note
______________
The ENCRYPTION_SEED1 and ENCRYPTION_SEED2 in lm_code.h are
numbers which are key to FLEXlm security. They are 0x87654321
and 0x12345678 by default. Each vendor must ensure that you
replace these with numbers which are unique to your company,
and keep these numbers secret. Only someone with access to
these numbers can generate license files that will work with
your application. MAKE SURE the numbers are not left to the
defaults.
Notice of Future Changes
________________________
Discontinuing "man" Pages
_________________________
Starting with v6 of FLEXlm, we will no longer ship a "man"
directory, with Unix-style man pages. These seem to
be more rarely used these days, and we ship HTML files
which provide a more popular on-line interface.
Discontinuing debug_libs directory
__________________________________
Starting with v6 of FLEXlm, we will no longer ship a
debug_libs directory.
New Features in V5.1
____________________
lc_hostid() -- improved hostid interface.
_________________________________________
int lc_hostid( LM_HANDLE *job,
int id_type,
char buf[MAX_CONFIG_LINE])
lc_hostid() fills in buf with a hostid string
specified by type. If type is HOSTID_DEFAULT, you get
the default hostid type on the system.
- 3 -
Hostids have become more flexible in recent versions,
and this allows programmers access to hostid
information in string format. It's recommended in the
future that programmers use this function and avoid
functions that deal with (HOSTID *) struct
information, since this may change from version to
version.
Note that lc_hostid may return a space-separated list
of hostids, if that's appropriate on a given system.
Hostid types are specified and described in lmclient.h
and include
HOSTID_LONG HOSTID_ETHER
HOSTID_ANY HOSTID_USER
HOSTID_DISPLAY HOSTID_HOSTNAME
HOSTID_ID_MODULE HOSTID_STRING
HOSTID_FLEXID1_KEY HOSTID_DISK_SERIAL_NUM
HOSTID_INTERNET HOSTID_DEMO
HOSTID_FLEXID2_KEY HOSTID_FLEXID3_KEY
HOSTID_FLEXID4_KEY HOSTID_FLEXID5_KEY
HOSTID_SERNUM_ID HOSTID_VENDOR
HOSTID_DEFAULT
lc_hostid returns 0 on success, and the FLEXlm errno on
error.
LM_A_RETRY_CHECKOUT attribute
_____________________________
When true, checkouts that fail due to communications
errors are automatically retried once. Often this
second attempt will succeed on networks with poor
communications. This is turned on by default in both
the Simple and Trivial API, and the default is off in
the FLEXible API. Use
lc_set_attr(job, LM_A_RETRY_CHECKOUT, (LM_A_VAL_TYPE)1);
to turn this attribute on for the FLEXible API
(recommended). It's turned off by default in the
FLEXible API so that previous default behavior is
preserved.
License File Enhancments
________________________
SUPERSEDE List
- 4 -
______________
SUPERSEDE
SUPERSEDE="feat1 ... featn"
SUPERSEDE=*ALL*
SUPERSEDE (new in v5.0) can now take a list of features
to supersede. This means that you can ship a single
feature line which, if installed, will make other
features with previous ISSUED dates unavailable to
your customers. This is a way to securely phase out
FEATUREs already shipped. If the list is "ALL", then all
previously issued FEATURE lines are disabled.
PLATFORMS="..."
_________________________
This allows you to restrict usage to particular hardware
platforms. The platforms are defined as the same platforms
that are used to license FLEXlm itself: sun4_u4, i86_n3, etc.
The names can be found in the Platform Specific Notes section
at the bottom of this file. Note that the platform
name can be overridden with
lc_set_attr(job, LM_A_PLATFORM_OVERRIDE, (LM_A_VAL_TYPE)str);
Note that the trailing digit in the platform name is
ignored, and can be optionally left off in the name.
If the platform list differs in any way for 2 INCREMENT
lines for the same feature-name, they're are pooled
separately and counted separately.
Examples:
FEATURE f1 ... PLATFORMS=sun4_u4
INCREMENT f2 ... 1 PLATFORMS="i86_w alpha_u"
INCREMENT f2 ... 1 PLATFORMS="i86_w"
f1 can be used on any sparc station running SunOS or
Solaris.
f2 can be used on a PC running Windows (not NT) and
Dec Alpha running OSF1 or DEC-Unix. There's 1 license
that can be shared between all Windows and Alpha-Unix
systems, and 1 more license just for Windows. That is,
at most 1 f2 can be used on the Alpha-Unix systems,
but at most 2 f2s can be used by Windows systems.
- 5 -
If the checkout fails because it's on the wrong
platform, the error returned is LM_PLATNOTLIC:
"This platform not authorized by license"
ID=1234 HOSTID
______________
We now support a pseudo-hostid of "ID=...". This is
functionally equivalent to the "ANY" hostid -- it
will run on any node. The difference is that the
customer has a unique identifier that can be used
to identify the customer. This hostid can be used
to lock the license server (on the SERVER line) or
the client node (on the FEATURE/INCREMENT line) --
anywhere a hostid can be used. The number can have
dashes included for readability -- the dashes are
ignored.
Examples:
ID=12345678 is the same as
ID=1234-5678 is the same as
ID=1-2-3-4-5-6-7-8
The HOSTID struct for this type is setup thus:
type = HOSTID_SERNUM_ID
id.string contains the id in string format.
lmdiag can now checkout individual INCREMENT or FEATURE lines
_____________________________________________________________
If a license file contains multiple lines for a
particular feature, you can now select a particular
line for lmdiag to report on. For example:
lmdiag f1:HOSTID=12345678
will attempt a checkout on the line with the hostid limited
to 12345678
The full syntax is:
lmdiag feature:specification=value
where:
feature feature name
specification one of the following:
VERSION
HOSTID
- 6 -
EXPDATE
KEY
VENDOR_STRING
ISSUER
NOTICE
dist_info
user_info
asset_info
value the value specifies a particular line.
WARNING(): Warning messages for Simple and Trivial API
____________________________________________________
With LM_LENIENT and LM_FAILSAFE, a CHECKOUT or lp_checkout() call
may succeed, while the license was not actually checked out.
In this case, an application may want to inform the user of
the condition, while still running.
If there is a warning condition:
1) CHECKOUT() and lp_checkout() will return 0 (success),
2) lp_warning() and WARNING() will return a string
describing the warning condition.
If there is no warning condition (the license was fully
checked out from the server), then lp_warning() and WARNING()
will return 0 (NULL).
PERROR(), PWARN(), lp_perror() and lp_pwarn()
___________________________________________________________
These Trivial and Simple API functions all print error
and/or warning messages to the user.
Windows: The messages appear in popups.
Unix: The messages are printed to stderr.
These functions are most useful on windows systems, since the
popups are convenient for programmers and end-users.
End User Options File Enhancments
___________________________________
MAX
___
Syntax: MAX numlic featurename type name
Example: MAX 4 f1 GROUP accounting
MAX gives your customers significantly more flexibility in
how they prioritize use of licenses at their site. In past,
- 7 -
you could RESERVE licenses for individuals, or prevent
individuals from using licenses, but with MAX, you can now
indicate that a particular GROUP has a maximum use. You can
also specify USER, HOST, HOST_GROUP, etc. as with all end-user
options. If a checkout exceeds the maximum, they will see the
following error message:
Checkout exceeds MAX specified in options file (-87,147)
TIMEOUTALL
__________
This works the same as TIMEOUT, but applies to all features:
TIMEOUTALL 1000
All features are timed out in 1000 seconds. See the
Programmers and/or End-User manual for more information
on TIMEOUT behavior.
End-user Options features can now be PACKAGE names
__________________________________________________
If you specify a PACKAGE name in the options file, it
will apply to all features in that package. This is
true for both regular PACKAGEs and OPTIONS=SUITE.
lc_checkin() now takes LM_CI_ALL_FEATURES
_________________________________________
The feature for lc_checkin can now be LM_CI_ALL_FEATURES
(which is actually a NULL pointer). This will check in all
features currently checked out. This has nearly the same
effect as calling lc_disconn() or even lc_free_job().
However, since a checkin message is actually sent to the
server, the REPORTLOG logs this as a normal checkin().
checkins that occur because of a disconnect are indicated
differently in the log, so that end-users could differentiate
between an application that actually calls checkin, and one
that simply exits.
IMPORTANT: If you use LM_CI_ALL_FEATURES (in the client) with
ls_infilter (in the vendor daemon), then ls_infilter MUST
check the feature name against LM_CI_ALL_FEATURES, which is
actually a NULL pointer. Failure to do so may result in a
crash. That is, you must check:
if (feature != LM_CI_ALL_FEATURES)
- 8 -
LM_A_TCP_TIMEOUT
________________
If a client node crashes or the client node is disconnected
from the network, the license will be automatically checked
back in in LM_A_TCP_TIMEOUT seconds.
default: 2 hours (60*60*2).
Maximum value: 4 hours 15 minutes (15300 seconds),
or 0 means NO TCP timeout.
Minimum value: 60 seconds
CPU Usage is now logged to REPORTLOG file.
__________________________________________
CPU Usage is now automatically always logged when the
REPORTLOG file is in use. In addition, this can be
fine-tuned by the end-user with 2 settings in the
end-user options file. The settings allow the user to
limit how much CPU-usage is logged, thereby reducing
log file size. By default, CPU-usage is only logged
at checkout and checkin. However, it can also be
logged with heartbeats enabling more accurate and
fine-tuned CPU-usage reporting.
REPORTLOG filename [ CPU_USAGE_INTERVAL = {n|CONTINUOUS} ] [CPU_USAGE_DELTA = n]
CPU_USAGE_INTERVAL=n -- CPU-usages from heartbeats
will be reported no more often than once every n
minutes. Default is a huge number.
"CONTINUOUS" is the same as 0, but is easier
to read.
CPU_USAGE_DELTA=n -- n is in tenths of a second of CPU
time. Only log CPU-usage if it has changed
from the last log by n/10 seconds of CPU-time.
Improved Expiration Date Checking
_________________________________
FLEXlm now automatically makes the following checks to ensure
security of the expiration date. These checks ONLY occur if the
license to be granted is expiring.
1) If the date on the system running the license
server has been set back more than 24 hours,
checkout fails with LM_BADSYSDATE
2) If the client is NOT using USE_SERVER or port@host,
the checkout fails if the client node's system date
has been set back more than 24 hours.
- 9 -
3) If the client's date differs by more than 24-hours
from the server's date.
FLEXible API Changes
____________________
lc_baddate changes
__________________
There are now 3 options with regard to end-users setting the system
date back:
1) The default is that we make no attempt to find out of the
system date has been set back.
2) If you want to deny service because the system date has
been set back, then use the one of the following (depending
on the API):
o CHECKOUT(policy|LM_CHECK_BADDATE, ...);
o lp_checkout(policy|LM_CHECK_BADDATE, ...);
o lc_set_attr(job, LM_A_CHECK_BADDATE, 1);
3) If you do not want to deny service, but only want to warn
if the system date has been set back, in the FLEXible API, call
if (lc_baddate(job))
lc_perror(warning_string, job);
NOTE: this changed from v5.11a, where the only option where
CHECK_BADDATE was the default, and there was no option to
disable it.
We found some cases on Unix with the date expiration routines
(identified as bug P2181), which caused a checkout to hang or
take a long time. In order to fix these cases, the routines
which detect a systems date being set back (including lc_baddate())
do not detect a set-back date as often as they did previously.
lc_expire_days returns LM_FOREVER on unexpiring license
_______________________________________________________
If the license doesn't expire, the expiration date is set to
1-jan-0, and lc_expire_days will return LM_FOREVER, which
is defined to be 9999. In version 5.0, lc_expire_days returned
the number of days until a date in the year 2038.
- 10 -
Other Enhancements
__________________
makekey prompts are more helpful
________________________________
The makekey license generator now has a simplified, more
helpful interface, and supports the all FEATURE attributes.
lmswitchr accepts daemon name
_____________________________
lmswitchr syntax is now:
lmswitchr [ -c license_file ] daemon new-file, or
lmswitchr [ -c license_file ] feature new-file
It used to only accept a feature name. It now accepts a
daemon name also, and this is usually easier to use.
lmgrd -nfs_log -- faster logging
________________________________
The -nfs_log is used to turn off fflush() commands to
both the debug log and REPORTLOG files. Through
internal testing we've discovered that fflush() can,
on some systems, noticeably slow down the servers when
they log to files that are NFS-mounted.
In practice we recommend that log files NOT be
NFS-mounted, but if you must do this, -nfs_log is then
recommended. This may mean that the log files will be
behind by a transaction or two, but in practice we
find that -nfs_log actually makes no noticeable
change, except to make the servers run faster.
lmdiag: server logs do not record checkout
___________________________________________
In previous versions, when lmdiag checked out a
license from the server, the server logs recorded the
checkout. The logs now no longer are affected by
lmdiag.
lmcrypt: -f is now the default
______________________________
- 11 -
In previous versions lmcrypt required -f to encrypt
a line already encrypted. This is now the default
behavior and doesn't require the -f argument.
If you prefer the old behavior, it can be modified
in machind/lmcrypt.c. The -f argument now has no effect.
Other Changes
_____________
makekey.c now uses lc_cryptstr()
________________________________
makekey source now uses lc_cryptstr() as encrypting
function. It previously used lc_crypt(), which is a
harder function to use and maintain across FLEXlm
versions. We now recommend that lc_cryptstr() be used
in its place.
Bug fixes:
__________
Bug Platform Description
P1039 all lmcrypt and lc_cryptstr() ignore FEATURESET.
P1414 all lmcrypt doesn't always truncate license file
lines to 80 characters. Note that this
fix only applies to lines that are in the
v4+ format -- to force this, add ck=0 attributes
to each line.
P1460 all In rare cases, checkouts with LM_A_CHECKOUT_DATA
and LM_DUP_VENDOR can become orphaned and never
checked in.
P1499 Win32 lsvendor.c defaults ls_minimum_user_timeout to 30
seconds.
P1488 all lc_expire_days() returns number of days until
max-unix date if no expiration. Fix is to
return LM_FOREVER.
P1506 all hostid lists should force FEATURE lines to be
printed in "new" new format, i.e., HOSTID="..."
P1511 all If TIMEOUT set, if the client tries to
do a checkout between when the server frees the
license and the client does a heartbeat, communications
fail. rare.
P1593 all lmdiag core dumps if no SERVER line in license file.
P1602 all lc_heartbeat() doc is missing from Reference Manual.
P1603 all copyright was a global symbol. All FLEXlm global
symbols should have "l_" or "lc_" prefix.
P1619 all lmstat reports non-suite PACKAGE name as "Error"
- 12 -
P1621 all 1 process checks out 2 SUITE components, then checks
1 in: SUITE-token should remain checked out, but
is not.
P1658 all The following end-user options file syntax did
not RESERVE the right FEATURE line:
"RESERVE ... feature:HOSTID=nnn"
P1659 all lmdiag: If there's several INCREMENT or FEATURE lines
for the same feature name, lmdiag only reported on
the last line.
P1674 all lc_test_conf after checkout with LM_CO_LOCALTEST
returned null if using port@host or USE_SERVER.
P1676 all CHECKIN the same feature twice resulted in a core dump.
P1708 Win32 Server log says "Unknown Signal" from lmdown.
P1715 all vendor-defined hostids fail if the vdef hostid
routine returns lowercase characters.
P1728 all On some platforms, LM_PROJECT environment variable
can cause vendor daemon to crash.
P1741 all 1) use port@host or USE_SERVER, 2) feature removed
from license, then lmreread, 3) checkout returns
LM_MAXUSERS instead of LM_NOFEATURE.
P1778 all lmcrypt core dumps when hostid has 0x prefix.
P1825 all lmdiag with colon-separated LM_LICENSE_FILE -- stops
reporting when on file in the list doesn't exist.
P1843 all lmdiag reports that licenses have incorrect syntax
when they have vendor-defined hostids, though the
files are correct.
P1850 all lc_cryptstr() and lmcrypt have memory leaks when
the feature contains "ck=nnn"
P1852 hp HP provides a command for changing the ethernet
address/hostid.
P1883 all purify reported harmless bug in l_key.c.
P1901 all lmcrypt/lc_cryptstr() fails with decimal hostids
(#nnn) larger than the maximum positive 32-bit int.
P1929 all Some lmutil utilities fail (lmdiag/lmutil, etc.) with
FLEXLM_COMM_TRANSPORT set to UDP.
P2045 all lmcrypt could core dump with mistyped license file.
P2058 alpha_u3 checkout uses a file descriptor which is not closed.
P2059 all memory leak when LM_A_LICENSE_DEFAULT is called > 1
time in a job.
P2096 i86_d4 (DG Intel): checkouts were slow.
P2118 all makekey generates incorrect ck= checksum when
line wraps with ''.
P2181 all On unix systems, lc_baddate could cause a checkout
to take a long time, or sometimes hang.
P2315 hp a node-locked v2.4 client can fail with a v5.11
vendor daemon. Appears most commonly with HP client.
P2362 alpha-unix Hostid fails on some systems.
P2372 sgi Hostid check fails when hostid > 0x80000000
P2376 all ret_num_reconnects arg to lc_heartbeat() or
lp_heartbeat() is incorrect with an uncounted
- 13 -
P2377 all Macros for PERROR() and PWARN() are incorrect.
P2378 all Licensing security threat.
P2391 all Server can fail when clock is set back, even
a few seconds. Failure is reported as LM_BADSYSDATE.
P2392 alpha-unix lmstrip causes binaries to fail on Dec Unix 4.x.
P2399 all With LM_LICENSE_FILE set to list of port@host,
lc_next_conf() and lc_userlist() can fail to talk
to all the servers. (v5.0)
P2401 all port@host+ and LM_CO_LOCALTEST can fail with
node-locked or when ls_use_all_features is true.
P2407 all lmstrip doesn't modify sunos4 binaries.
P2477 all Licensing security threat.
Platform Specific Notes:
________________________
i86_w3
______
Win32s will not be supported after FLEXlm v5. This is
because Microsoft is discontinuing support for win32s.
UNIX
____
alpha_u3
________
uname -a: OSF1 zippy V3.2 17 alpha
CC: cc -std1
NOTE: alpha_u1 is discontinued. This only means that
we no longer support v1 and v2 of the OS, and
virtually no one uses those OS versions. Alpha_u3
fully supports Alpha DEC Unix 3 and 4.
decs_u4
_______
uname -a: ULTRIX newport 4.2 0 RISC
CC: /bin/cc -DPMAX -DULTRIX -DMIPS
dg_u5
_____
- 14 -
uname -a: dgux dgsvr4 5.4 generic AViiON mc88100
CC: /bin/cc
hp300_u8
________
uname -a: HP-UX agent86 B.08.00 A 9000/375 080009060992
CC: /bin/cc
link flags: -lBSD
hp700_u8
________
uname -a: HI-UX hit1 02.03_/B E 3050/R 154
CC: /bin/cc -Aa -D_HIUX_SOURCE +DA1.0 +DS1.0
(replace HIUX with HPUX on an HP system)
Hostid note: we no longer recommend using ethernet address
as a hostid.
i86_b2
______
uname -a: BSD/OS bsdi.globes.com 2.1 BSDI BSD/OS 2.1 Kernel #1:
Mon Jun 10 15:58:19 MDT 1996
polk@demiurge.BSDI.COM:/usr/src/sys/compile/GENERIC
i386
CC: /usr/ucb/cc
NOTE: The hostid is the ethernet address.
i86_d4
______
uname -a: dgux dgbig R4.11 generic AViiON Pentium
CC: /bin/cc, actually, /usr/opt/sdk/sde/ix86dgux/usr/bin
NOTE: hostid comes from /dev/net/*. By default these files
are only readable by root. We recommend changing the
perms to:
# chmod 644 /dev/net/*
i86_l1
______
uname -a: Linux linux 1.2.13 #1 Sun Aug 13 06:33:35 EDT 1995 i586
CC: /usr/bin/cc
cc -v: Reading specs from /usr/lib/gcc-lib/i486-linux/2.7.0/specs
gcc version 2.7.0
IMPORTANT NOTE: v5 version uses ethernet address as a hostid,
- 15 -
which is relatively secure. v4 used the 'hostid' command,
which was not secure. To obtain the ethernet address, type:
/sbin/ifconfig eth0
Convert the hardward address as follows:
From: HWaddr 00:40:05:16:E5:25
To: 00400516E525
V5 lmhostid will report ethernet address by default. v4
will report 'hostid'. Both types of hostid are acceptable
to version 5 clients and servers.
lmhostid, or lmhostid -ether
-- obtains the ethernet address (secure)
lmhostid -long
-- obtains the output from the 'hostid' command
(not secure)
i86_u2
______
uname -a: UNIX_SV rolm 4.2MP 2.0 i386 x86at
CC: /usr/bin/cc
i86_x5 (Solaris on Intel)
______
uname -a: SunOS sunpc 5.4 generic i86pc i386
CC: /opt/SUNWspro/bin (version 3.0)
moto_u4
_______
uname -a: UNIX_System_V motosvr4 4.0 R40V4.2 m88k mc88100
CC: /bin/cc
link flags: -lsocket -lnsl
nec_u2
______
uname -a: UNIX_System_V nec 4.0 2 R3000 r3000
CC: /bin/cc
link flags: -lsocket -lnsl
/usr/necbin/uversion: Release6.2 Rev01 - EWS4800/220 - WS
ppc_u4 (Power PC AIX v4)
______
uname -a: AIX aixv4 1 4 00FFFFFF4D00
- 16 -
CC: /bin/cc with -D_BSD -D_BSD_INCLUDES
link flags: -lbsd
Hostid is the same as rs6000.
rs6000_u3
_________
uname -a: AIX rs6000 1 3 000276513100
CC: /bin/cc -D_BSD -D_BSD_INCLUDES
link flags: -lbsd
sco_u3
______
uname -a: SCO_SV sco 3.2 2 i386
uname -X:
System = SCO_SV
Node = sco
Release = 3.2v5.0.0
KernelID = 95/04/19
Machine = i80486
BusType = ISA
Serial = 2CG001148
Users = 5-user
OEM# = 0
Origin# = 1
NumCPU = 1
CC: /bin/cc -Dsco
link flags: scoinfo.o -lsocket
IMPORTANT NOTE: Previous FLEXlm versions were built on an older OS:
Release = 3.2v2.0
KernelID = 90/10/01
sgi_u4
______
uname -a: IRIX oly 4.0 08212247 IP6
CC: /usr/bin/cc -cckr
link flags: -lsun -lbsd -lc_s
sgi_u5
______
uname -a: IRIX indy 5.2 02282013 IP12 mips
CC: /bin/cc
To build -n32 -mips3 or -n32 -mips4 on IRIX 6:
1) In this directory, do:
- 17 -
% make o32
This builds all binaries in o32 format.
2) Link your application (which has been compiled with
-n32 -mips3 (or -mips4) with the correct FLEXlm library:
liblmgr_n32mips3.a, or
liblmgr_n32mips4.a
NOTE: sgi keys are required for any 32-bit binary, including
IRIX 6 with -n32 flags.
sgi64_u6
________
uname -a: IRIX64 challenger 6.1 07121831 IP26 mips
CC: /bin/cc -64 -mips4
This was called sgir8_u6 in previous versions. It's been
renamed to reflect the fact that it's 64-bit.
To build -n32 -mips3 or -n32 -mips4, see sgi_u5 above.
We currently only support 64-bit, mips4 binaries, which
is how all files in this directory are compiled.
sun4_u4
_______
uname -a: SunOS ss 4.1.2 2 sun4c
CC: /bin/cc
sun4_u4 is now built on a 4.1.2 system. This means that it
will no longer work with 4.0.3 systems.
sun4_u5
_______
uname -a: SunOS backstage 5.1 Generic sun4m sparc
CC: /opt/SUNWspro/bin/cc
Java Addendum
Installation and Directory Naming
- 18 -
---------------------------------
No special installation of the FLEXlm class files is required.
The classes are in the java_01/flexlm directory of the FLEXlm
v5.1 main directory. Note that the FLEXlm class files must reside
in a directory called "flexlm", since they are in a Java package
named "flexlm".
If you are running Java applications, you must set your CLASSPATH
environment variable to include a component reflecting the location
of the FLEXlm classes. For example, if you installed the FLEXlm
classes into "/a/b/c/lmgr/v5.1/java_01/flexlm" you would include
the following component in your CLASSPATH:
"/a/b/c/lmgr/v5.1/java_01"
If you are setting up the FLEXlm class files for access by an http
server, they must reside in a directory called "flexlm", again
because the FLEXlm class files are in the "flexlm" package.
New Features Since v5.0
-----------------------
With LM.LENIENT and LM.FAILSAFE, checkout() may succeed, while
the license was not actually checked out. In this case, an
application may want to inform the user of the condition, while
still running. If there is a warning condition:
1) checkout() will return 0 (success),
2) warning() will return a string describing the warning
condition.
If there is no warning condition (the license was fully
checked out from the server), warning() will return null.
The string to use for the Java platform in the PLATFORM= keyword
is "java_0".
The default TCP_TIMEOUT in FLEXlm/Java is 255 minutes. There is
no API for changing this value.
Integrating FLEXlm/Java into Your Java code
-------------------------------------------
The constructor method for the "license" class takes your
vendor keys and your encryption seeds as arguments. Since
the encryption seeds must be kept secret (anyone who knows
your encryption seeds and has a FLEXlm kit can generate
licenses for your product), they are XORed with vendor key 5
when passed as method arguments. It is strongly recommended
that you not store your encryption seeds and vendor keys in
variables, or pass them verbatim as arguments.
For example, given the following:
Vendor name = xyzcorp
vendor key 1 = 0xabcd1
vendor key 2 = 0xabcd2
- 19 -
vendor key 3 = 0xabcd3
vendor key 4 = 0xabcd4
vendor key 5 = 0xabcd5
encryption seed 1 = 0xdead1
encryption seed 2 = 0xdead2
you would invoke the license constructor as follows:
license lic = new license ("xyzcorp", 0xabcd5 ^ 0xdead1,
0xabcd5 ^ 0xdead2,
0xabcd1, 0xabcd2, 0xabcd3, 0xabcd4);
In this way, it's much harder for someone reading disassembled
code to discover your encryption seeds.
Node-locked Licenses
--------------------
Since Java is so portable and generic, there is not nearly the
range of possibilities for determining a unique hostid in the
Java environment as there are in the C/C++ world. Therefore,
the FLEXlm/Java library supports only "DEMO", "ANY", and
INTERNET=xxx.xxx.xxx.xxx hostids. Hostid lists are supported,
so you can node-lock a license to a list of hostids, for example:
"INTERNET=1.2.3.4 INTERNET=1.2.3.5 INTERNET=1.2.3.6". Wildcards
are supported in address octets.
Locating the License File
-------------------------
The checkout method allows you to specify the license file location.
This is used to supply a runtime-determined license file location,
such as a value supplied on the command line, applet parameter, or
a default. It may be specified as a colon-separated list of license
files and/or port@host specifications.
License File Restrictions
-------------------------
When possible, it is preferable to use "port@host" to locate the
license file, rather than a license file path. This is because
the FLEXlm/Java implementation is not capable of parsing all
possible license file syntax - when port@host is used, the server
does all the license file parsing. Specifically, the FLEXlm/Java
implementation understands only the following license file lines:
SERVER
DAEMON (ignored)
USE_SERVER
FEATURE
INCREMENT
Comment lines (lines starting with the "#")
Inclusion of other line types may cause an error.
- 20 -
In addition, the Java library does not understand KEYWORD=value
pairs (with the exception of "INTERNET=xxx.xxx.xxx.xxx" for host
ID). or lines continued with "
Examples of license file lines which are understood by the Java
client:
SERVER speedy ANY 7132
DAEMON demo /u/flexlm/sun4_u4/demo
FEATURE f1 demo 1.000 1-jan-00 4 BBF8808162D4072297FF ""
FEATURE f2 demo 1.000 1-jan-98 0 FBA85061E4ACCBA6D932 "" "INTERNET=192.156.198.82 INTERNET=192.156.199.*"
Examples of license file lines which are not understood by the
Java client:
PACKAGE p1 demo 1.000 8040204170869E176457 COMPONENTS="c1 c2"
FEATURE f1 demo 1.000 1-jan-0 4 BBF8808162D4072297FF "" HOSTID=2f2f2f2f
FEATURE f2 demo 1.000 1-jan-98 0 FBA85061E4ACCBA6D932 "" "INTERNET=192.156.198.82 INTERNET=192.156.199.*"
To reiterate, the restriction is that the FLEXlm/Java library cannot
parse these lines - it is perfectly reasonable to use such lines in
a license file accessed via port@host, as the server does all the
parsing in that scenario. License file paths should be used only
for uncounted licenses, where it's not necessary to run a server.
FLEXlm display
--------------
The FLEXlm display is a constant ("JavaDisplay") in the Java version.
Development Environment
-----------------------
The FLEXlm/Java classes were compiled using Sun's JDK v1.0.2
on Solaris/SPARC 2.x.
Known bugs in this version
--------------------------
- Checkin is broken in port@host environment if license file line is
greater than 145 bytes long. checkin fails when called, but any
licenses checked out by an application or applet are checked in
when it exits.
- If USE_SERVER is present anywhere in the license file, it causes
the server to be used for everything, not just the lines following
USE_SERVER.